home *** CD-ROM | disk | FTP | other *** search
/ MacHack 1997 / MacHack 1997.toast / Hacks / Hacks ’96 / MenuHack / MenuHackSource.sit / jGNELib.c < prev    next >
Text File  |  1996-06-21  |  2KB  |  91 lines

  1. /*------------------------------------------------------------------------------
  2. #
  3. #    jGNEFilter Code Resource Library
  4. #
  5. #    This routine loads a small 68K resource that acts as a "safe" jGNEFilter connector (allows
  6. #    hooking and unhooking at will.
  7. #
  8. #    Copyright © CE Software, Inc., Inc. 1996
  9. #    All rights reserved.
  10. #
  11. ------------------------------------------------------------------------------*/
  12. #include <Gestaltequ.h>
  13. #include <Limits.h>
  14. #include <Types.h>
  15. #include <Resources.h>
  16. #include <QuickDraw.h>
  17. #include <Fonts.h>
  18. #include <Events.h>
  19. #include <Windows.h>
  20. #include <Menus.h>
  21. #include <TextEdit.h>
  22. #include <Dialogs.h>
  23. #include <Desk.h>
  24. #include <ToolUtils.h>
  25. #include <Memory.h>
  26. #include <SegLoad.h>
  27. #include <Files.h>
  28. #include <OSUtils.h>
  29. #include <OSEvents.h>
  30. #include <Traps.h>
  31. #include "jGNELib.h"
  32.  
  33. typedef pascal void (*jGNEProcActionProcPtr)(short theAction, 
  34.                                                 long thejGNEProc, 
  35.                                                 long refcon);
  36.                                                 
  37. typedef pascal void (*jGNEProcInitProcPtr)(void);
  38.  
  39.  
  40. jGNEProcActionProcPtr        gTheProc = nil;
  41.  
  42. void    InitjGNEProcLib(void)
  43. {
  44.     OSErr    err;
  45.     Handle    thecodeproc;
  46.     
  47.     err = Gestalt('jGNE', (long*)&gTheProc);
  48.     if (err)
  49.     {
  50.         gTheProc = nil;
  51.         thecodeproc = GetResource('CECD', 10);
  52.         if (thecodeproc)
  53.         {
  54.             ((jGNEProcInitProcPtr)(*thecodeproc))();
  55.         }
  56.     }
  57. }
  58.  
  59.  
  60. void    HookjGNE(long thejGNEProc, long    refcon)
  61. {
  62.     OSErr    err;
  63.     if (!gTheProc)
  64.     {
  65.         err = Gestalt('jGNE',(long*) &gTheProc);
  66.         if (err || !gTheProc)
  67.         {
  68.             return;
  69.         }
  70.     }
  71.     gTheProc(1, thejGNEProc, refcon);
  72. }
  73.  
  74.  
  75. void    UnHookjGNE(void)
  76. {
  77.     OSErr    err;
  78.     
  79.     if (!gTheProc)
  80.     {
  81.         err = Gestalt('jGNE', (long*)&gTheProc);
  82.         if (err || !gTheProc)
  83.         {
  84.             return;
  85.         }
  86.     }
  87.     gTheProc(2, 0, 0);
  88. }
  89.  
  90.  
  91.